---
id: 64234797d84734163088961a
title: Schritt 33
challengeType: 0
dashedName: step-33
---

# --description--

Und erlaube deinem regulären Ausdruck schließlich, ganze Wörter zu finden (wie du es mit `freeRegex` getan hast).

# --hints--

Deine `stockRegex` sollte eine Gruppe verwenden, die nicht erfasst wird.

```js
assert.match(stockRegex.source, /\(\?:/);
```

Deine `stockRegex` sollte eine Gruppe verwenden, die nicht erfasst wird, um mit `\s` oder `^` übereinzustimmen.

```js
assert.match(stockRegex.source, /\(\?:(\^\|\\s|\\s\|\^)\)/);
```

Deine `stockRegex` sollte eine zweite Gruppe verwenden, die nicht erfasst wird.

```js
assert.lengthOf(stockRegex.source.match(/\(\?:/g), 2);
```

Deine `stockRegex` sollte eine Gruppe verwenden, die nicht erfasst wird, um mit `\s` oder `$` übereinzustimmen.

```js
assert.match(stockRegex.source, /\(\?:(\$\|\\s|\\s\|\$)\)/);
```

Deine `stockRegex` sollte mit `it's stock alert time` übereinstimmen.

```js
assert.match("it's stock alert time", stockRegex);
```

Deine `stockRegex` sollte mit `stock alert time` übereinstimmen.

```js
assert.match('stock alert time', stockRegex);
```

Deine `stockRegex` sollte mit `it's stock alert` übereinstimmen.

```js
assert.match("it's stock alert", stockRegex);
```

Deine `stockRegex` sollte mit `stock alert` übereinstimmen.

```js
assert.match('stock alert', stockRegex);
```

Deine `stockRegex` sollte nicht mit `hands-stock alert time` übereinstimmen.

```js
assert.notMatch('hands-stock alert', stockRegex);
```

Deine `stockRegex` sollte nicht mit `stock alert-management` übereinstimmen.

```js
assert.notMatch('stock alert-management', stockRegex);
```

# --seed--

## --seed-contents--

```html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width" />
    <title>Learn Regular Expressions by Building a Spam Filter</title>
    <link rel="stylesheet" href="styles.css" />
  </head>

  <body>
    <header class="main-text">
      <h1 class="title">Is this Spam?</h1>
      <p class="description">
        Enter a phrase to check if it would be marked as spam or not.
      </p>
    </header>

    <main>
      <label class="message-label" for="message-input">Message: </label>
      <textarea
        placeholder="Enter message here"
        value=""
        type="text"
        name="message"
        id="message-input"
        rows="10"
        cols="40"
      ></textarea>
      <button class="btn" id="check-message-btn" type="button">
        Check message
      </button>
      <p id="result"></p>
    </main>

    <footer class="footer">&copy; freeCodeCamp</footer>
    <script src="./script.js"></script>
  </body>
</html>
```

```css
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

:root {
  --dark-grey: #1b1b32;
  --light-grey: #f5f6f7;
  --golden-yellow: #fecc4c;
  --yellow: #ffcc4c;
  --gold: #feac32;
  --orange: #ffac33;
  --dark-orange: #f89808;
}

body {
  background-color: var(--dark-grey);
  color: var(--light-grey);
}

body,
#message-input:placeholder-shown {
  text-align: center;
}

textarea {
  max-width: 90%;
}

.main-text {
  margin: 25px 0;
}

.title {
  font-size: 2.5rem;
}

.description {
  margin-top: 15px;
  font-size: 1.4rem;
}

.message-label {
  display: block;
  margin-bottom: 20px;
  font-size: 1.5rem;
}

#message-input:placeholder-shown,
textarea {
  font-size: 1.1rem;
}

.btn {
  display: block;
  cursor: pointer;
  width: 200px;
  margin: 10px auto;
  color: var(--dark-grey);
  background-color: var(--gold);
  background-image: linear-gradient(var(--golden-yellow), var(--orange));
  border-color: var(--gold);
  border-width: 3px;
}

.btn:hover {
  background-image: linear-gradient(var(--yellow), var(--dark-orange));
}

#result {
  font-size: 2rem;
  margin: 20px 0;
}

.footer {
  margin-top: 10px;
}
```

```js
const messageInput = document.getElementById("message-input");
const result = document.getElementById("result");
const checkMessageButton = document.getElementById("check-message-btn");

const helpRegex = /please help|assist me/i;
const dollarRegex = /[0-9]+ (?:hundred|thousand|million|billion)? dollars/i;
const freeRegex = /(?:^|\s)fr[e3][e3] m[o0]n[e3]y(?:$|\s)/i;
--fcc-editable-region--
const stockRegex = /[s5][t7][o0][c{[(]k [a@4]l[e3]r[t7]/i;
--fcc-editable-region--

const denyList = [helpRegex, dollarRegex, freeRegex, stockRegex];

const isSpam = (msg) => denyList.some((regex) => regex.test(msg));

checkMessageButton.addEventListener("click", () => {
  if (messageInput.value === "") {
    alert("Please enter a message.");
    return;
  }

  result.textContent = isSpam(messageInput.value)
    ? "Oh no! This looks like a spam message."
    : "This message does not seem to contain any spam.";
  messageInput.value = "";
});
```
